#ifndef INCLUDED_jax_lang_JClass
#define INCLUDED_jax_lang_JClass

#ifndef HXCPP_H
#include <hxcpp.h>
#endif

#include <jax/lang/JObject.h>
HX_DECLARE_CLASS1(haxe,Public)
HX_DECLARE_CLASS1(jax,JClassField)
HX_DECLARE_CLASS1(jax,JConstant)
HX_DECLARE_CLASS1(jax,JMethod)
HX_DECLARE_CLASS2(jax,lang,JClass)
HX_DECLARE_CLASS2(jax,lang,JObject)
namespace jax{
namespace lang{


class JClass_obj : public ::jax::lang::JObject_obj{
	public:
		typedef ::jax::lang::JObject_obj super;
		typedef JClass_obj OBJ_;
		JClass_obj();
		Void __construct();

	public:
		static hx::ObjectPtr< JClass_obj > __new();
		static Dynamic __CreateEmpty();
		static Dynamic __Create(hx::DynamicArray inArgs);
		~JClass_obj();

		HX_DO_RTTI;
		static void __boot();
		static void __register();
		void __Mark(HX_MARK_PARAMS);
		void __Visit(HX_VISIT_PARAMS);
		::String __ToString() const { return HX_CSTRING("JClass"); }

		int minor_version; /* REM */ 
		int major_version; /* REM */ 
		int const_pool_count; /* REM */ 
		Array< ::jax::JConstant > const_pool; /* REM */ 
		int access_flags; /* REM */ 
		int bitmask; /* REM */ 
		int this_id; /* REM */ 
		int super_id; /* REM */ 
		int interf_count; /* REM */ 
		Array< int > interfaces; /* REM */ 
		Array< ::jax::JClassField > cfields; /* REM */ 
		Array< ::jax::JMethod > methods; /* REM */ 
		virtual Array< ::String > getInterfaces( );
		Dynamic getInterfaces_dyn();

		virtual ::String getName( );
		Dynamic getName_dyn();

		virtual ::String getSuper( );
		Dynamic getSuper_dyn();

		virtual ::jax::JMethod getMethod( ::jax::JConstant nt,Array< ::jax::JConstant > pool);
		Dynamic getMethod_dyn();

		virtual ::String toString( );

		virtual Void initc( );
		Dynamic initc_dyn();

};

} // end namespace jax
} // end namespace lang

#endif /* INCLUDED_jax_lang_JClass */ 
